home *** CD-ROM | disk | FTP | other *** search
- /* LEXRF: Lexical tables for reference concrete syntax.
- */
-
- #include "config.h"
- #include "entity.h" /* Templates for entity control blocks. */
- #include "synxtrn.h" /* Declarations for concrete syntax constants. */
- #include "action.h" /* Action names for all parsing. */
- #include "lexcode.h"
-
- static UNCH SRTAB[] = { TABCHAR, '\0' };
- static UNCH SRRE[] = { RECHAR, '\0' };
- static UNCH SRRS[] = { RSCHAR, '\0' };
- static UNCH SRRSB[] = { RSCHAR, 'B', '\0' };
- static UNCH SRRSRE[] = { RSCHAR, RECHAR, '\0' };
- static UNCH SRRSBRE[] = { RSCHAR, 'B', RECHAR, '\0' };
- static UNCH SRBRE[] = { 'B', RECHAR, '\0' };
-
- struct lexical lex = { /* Delimiter set constants for parser use. */
- { /* Markup strings for text processor use. */
- (UNCH *)"\4", /* LEXCON markup string: CRO */
- (UNCH *)"[", /* LEXCON markup string: DSO */
- (UNCH *)"\3&", /* LEXCON markup string: ERO */
- (UNCH *)"\4</", /* LEXMARK markup string: end-tag */
- (UNCH *)"\3\"", /* LEXMARK markup string: LIT */
- (UNCH *)"\3'", /* LEXMARK markup string: LITA */
- (UNCH *)"\3>", /* LEXCON markup string: MDC */
- (UNCH *)"\4<!", /* LEXCON markup string: MDO */
- (UNCH *)"\5]]>", /* LEXCON markup string: mse */
- (UNCH *)"\5<![", /* LEXCON markup string: mss */
- (UNCH *)"\13<![CDATA[", /* LEXCON markup string: mss CDATA */
- (UNCH *)"\14<![RCDATA[", /* LEXCON markup string: mss RCDATA */
- (UNCH *)"\3>", /* LEXCON markup string: PIC */
- (UNCH *)"\4<?", /* LEXCON markup string: PIO */
- (UNCH *)"\3;", /* LEXGRP markup string: ref close. */
- (UNCH *)"\3<", /* LEXMARK markup string: start-tag */
- (UNCH *)"\3>", /* LEXMARK markup string: TAGC */
- (UNCH *)"\3=", /* LEXMARK markup string: VI */
- 3, /* LEXMARK: length of null end-tag. */
- 2 /* LEXMARK: length of null start-tag. */
- },
- { /* Short reference delimiters. */
- { /* Short reference delimiter table. */
- {(UNCH *)"", SRCT}, /* Dummy entry to store SR count. */
- {SRTAB, 1}, /* TAB */
- {SRRE, 2}, /* RE */
- {SRRS, 3}, /* RS */
- {SRRSB, 4}, /* Leading blanks */
- {SRRSRE, 5}, /* Null record */
- {SRRSBRE, 6}, /* Blank record */
- {SRBRE, 7}, /* Trailing blanks */
- {(UNCH *)" ", 8}, /* Space */
- {(UNCH *)"BB", 9}, /* Two or more blanks */
- {(UNCH *)"\"", 10}, /* Quotation mark (first data character) */
- {(UNCH *)"#", 11}, /* Number sign */
- {(UNCH *)"%", 12}, /* FCE CHARACTERS start here */
- {(UNCH *)"'", 13},
- {(UNCH *)"(", 14},
- {(UNCH *)")", 15},
- {(UNCH *)"*", 16},
- {(UNCH *)"+", 17},
- {(UNCH *)",", 18},
- {(UNCH *)"-", 19}, /* Hyphen */
- {(UNCH *)"--", 20}, /* Two hyphens */
- {(UNCH *)":", 21},
- {(UNCH *)";", 22},
- {(UNCH *)"=", 23},
- {(UNCH *)"@", 24},
- {(UNCH *)"[", 25},
- {(UNCH *)"]", 26},
- {(UNCH *)"^", 27},
- {(UNCH *)"_", 28}, /* Low line */
- {(UNCH *)"{", 29},
- {(UNCH *)"|", 30},
- {(UNCH *)"}", 31},
- {(UNCH *)"~", 32},
- {0, 0}
- },
- { /* Printable form of unprintable SR delims.*/
- "", /* Dummy entry to balance s.dtb. */
- "TAB;", /* TAB */
- "RE;", /* RE */
- "RS;", /* RS */
- "RS;B", /* Leading blanks */
- "RS;RE;", /* Null record */
- "RS;BRE;", /* Blank record */
- "BRE;", /* Trailing blanks */
- "SPACE;" /* Space */
- },
- 12, /* LEXCNM: Index of first FCE in srdeltab. */
- 20, /*LEXCNM:Index of "two hyphens" in srdeltab*/
- 10, /* LEXCNM: Index of first SR with data char. */
- 19, /* LEXCNM: Index of hyphen in srdeltab. */
- SRNPRT+1, /* LEXCNM: Index of 1st printable SR. */
- 8, /* LEXCNM: Index of space in srdeltab. */
- 25, /* LEXCNM: Index of left bracket in srdeltab. */
- 26, /* LEXCNM: Index of right bracket in srdeltab. */
- }, /* End of short reference delimiters. */
- { /* General delimiter characters. */
- GENRECHAR, /*LEXCNM:(BS)Generated RE; can't be markup.*/
- '"', /* LEXMARK: Char used as LIT delimiter.*/
- '\'', /* LEXMARK: Char used as LITA delimiter.*/
- '>', /* LEXLMS: Char used as MDC delimiter.*/
- ']', /* LEXLMS: Char used as MSC when enabled.*/
- '/', /* LEXCON: Char used as NET when enabled.*/
- '%', /* LEXMARK: Char used as PERO delimiter. */
- '>', /* LEXCON: Char used as PIC delimiter.*/
- '<' /* LEXCON: Char used as TAGO when enabled.*/
- },
- { /* Lexical table code assignments. */
- FCE, /* LEXCNM: FRE char as entity reference.*/
- FRE, /* LEXLMS: Free character not an entity ref.*/
- LITC, /* LEXLMS: Literal close delimiter enabled. */
- MSC3, /* LEXLMS: Marked section close delim enabled. */
- NET, /* LEXCON: Null end-tag delimiter enabled. */
- ETI, /* LEXCON: NET disabled; still used as ETI. */
- SPCR, /* LEXCNM: Space in use as SHORTREF delim. */
- TGO2, /* LEXCON: Tag open delimiter enabled. */
- CDE /* LEXLMS: CDATA/SDATA delimiters. */
- }
- };
-
- UNCH *lextabs[] = {
- lexcnm, lexcon, lexgrp, lexlms, lexmark, lexsd, lextoke, 0
- };
-